package org.xp.judgeplatform.service;

/**
 * 语言执行器接口
 * 每种编程语言都应该实现此接口，提供特定语言的执行逻辑
 */
public interface LanguageExecutor {
    
    /**
     * 获取容器名称
     * @return Docker容器名称
     */
    String getContainerName();
    
    /**
     * 获取执行命令
     * @return 执行命令
     */
    String getExecuteCommand();
    
    /**
     * 执行代码
     * @param code 用户提交的代码
     * @param testCasesJson 测试用例JSON
     * @param functionName 函数名称
     * @return 执行结果JSON字符串
     * @throws Exception 执行异常
     */
    String execute(String code, String testCasesJson, String functionName) throws Exception;
    
    /**
     * 检查代码是否有安全问题
     * @param code 用户提交的代码
     * @return 是否安全
     */
    default boolean isCodeSafe(String code) {
        // 默认实现可以检查一些通用的安全问题
        return ! code.contains("System.exit") &&
                ! code.contains("Runtime.exec") &&
                ! code.contains("ProcessBuilder");
    }
}